#ifndef _TOTAL_CONFIG_H_
#define _TOTAL_CONFIG_H_
#include "gd32f30x.h"
#include <stdbool.h>
#include "semphr.h"

/***********************business层******************************** */
// business层 任务相关: 优先级 任务栈大小  任务循环间隔时间
#define BUSI_TASK_PRIORITY   2
#define BUSI_TASK_STACK_SIZE 150
#define BUSI_TASK_INTERVAL_TIME pdMS_TO_TICKS(4000)

// 温度传感器 上限与下限
#define BUSI_SAMPLE_TEMPRATURE_HIGH_THRESHOLD 27.0f
#define BUSI_SAMPLE_TEMPRATURE_LOW_THRESHOLD  26.0f
// 光线传感器 上限与下限
#define BUSI_SAMPLE_BRLIGHTNESS_HIGH_THRESHOLD 1000
#define BUSI_SAMPLE_BRLIGHTNESS_LOW_THRESHOLD  500

// business层等待采集模块的时间(ms)
#define BUSI_WAIT_SAMPLE_TIME (pdMS_TO_TICKS(1000))
// business层等待控制模块的时间(ms)
#define BUSI_WAIT_COTR_TIME (pdMS_TO_TICKS(1000))

// 风扇状态枚举
typedef enum {
    FAN_STATUS_OFF = 0,    // 关闭
    FAN_STATUS_ON,         // 打开
    FAN_STATUS_FAULT       // 故障（如堵转、通信失败）
} fan_status_e;

// 灯光状态枚举
typedef enum {
    LIGHT_STATUS_OFF = 0,  // 关闭
    LIGHT_STATUS_ON,       // 打开
    LIGHT_STATUS_FAULT     // 故障（如驱动异常）
} light_status_e;


/***********************middel层*********************************/
// 中间层 采集模块 任务 优先级 
#define MID_SAMPLE_MODUEL_TASK_PRIORITY     3
// 中间层 采集模块 任务 优先级 
#define MID_SAMPLE_MODUEL_TASK_STACK_SIZE    256

// 中间层 控制模块 任务 优先级 
#define MID_CONTROL_MODUEL_TASK_PRIORITY    3
// 中间层 控制模块 任务 优先级 
#define MID_CONTROL_MODUEL_TASK_STACK_SIZE    256

//中间层等待温度采集的时间(ms)
#define MID_WAIT_TEMP_SAMPLE_TIME (pdMS_TO_TICKS(200))
//中间层等待亮度采集的时间(ms)
#define MID_WAIT_BRIGHT_SAMPLE_TIME (pdMS_TO_TICKS(200))

//中间层等待风扇控制的时间(ms)
#define MID_WAIT_FAN_CONTROL_TIME (pdMS_TO_TICKS(200))
//中间层等待亮度控制的时间(ms)
#define MID_WAIT_LIGHT_CONTROL_TIME (pdMS_TO_TICKS(200))

/***********************adapter层*********************************/
// 风扇控制任务优先级 和栈大小
#define ADA_SWITCH_FAN_TASK_PRIORITY      	 4
#define ADA_SWITCH_FAN_TASK_STACK_SIZE    	 128
// 灯光控制任务优先级 和栈大小
#define ADA_SWITCH_LIGHT_TASK_PRIORITY       4
#define ADA_SWITCH_LIGHT_TASK_STACK_SIZE     128

/***********************DRV层*********************************/
// freeModbus 通信任务优先级 栈大小 以及freeModbus通信的波特率
#define DRV_FREEMODBUS_TASK_PRIORITY         4
#define DRV_FREEMODBUS_TASK_STACK_SIZE       256
#define DRV_FREEMODBUS_BAUDRATE              9600
/***********************shell*********************************/
// shell 任务优先级以及栈大小
#define SHELL_TASK_PRIORITY         1
#define SHELL_TASK_STACK_SIZE       512
#endif
